package day_2022_7_to_8.day48;

/**
 * @author haomin
 * @date 2022/07/24 14:55
 **/
public class Day9_2_Offer64_SumNums {
    // 方法一：递归减一（但是题为中等，肯定不能这样解，也不能用if）
    class Solution1 {
        public int sumNums(int n) {
            if(n == 1){
                return 1;
            }
            return n + sumNums(n-1);
        }
    }

    // 方法二：等差数列
    class Solution2 {
        public int sumNums(int n) {
            return (n + 1) * n / 2;
        }
    }

    // 方法三：逻辑运算符的短路性质 &&
    class Solution3 {
        public int sumNums(int n) {
            boolean flag = n > 0 && (n += sumNums(n-1)) > 0;
            return n;
        }
    }

    // 方法四：逻辑运算符的短路性质 ||
    class Solution {
        public int sumNums(int n) {
            boolean flag = n == 1 || (n += (sumNums(n-1))) > 0;
            return n;
        }
    }
}